1. Field
The present invention relates generally to data synchronization between two or more devices, and in one aspect, to a synchronization method and system to reduce the potential for synchronization failures.
2. Description of Related Art
A variety of mobile computing devices exist, such as personal digital assistants (PDAs), mobile phones, smart phones, camera phones, pocket personal computers, and the like which perform an ever growing variety of functions. The trend is for mobile computing devices to have increased functionality such that a single mobile device may, for example, provide Internet access, maintain a personal calendar, provide mobile telephony, take digital photographs, play music files, and the like.
Data on such mobile computing device can be synchronized with network applications, desktop computer applications, or other databases within a telecommunications system. For example, calendar entries, contact information, and email applications, in particular, may be synchronized between multiple devices via a communication system. The SyncML (Synchronization Markup Language), which is based on the XML (extensible Markup Language) is well known for the synchronization of data between two or more devices, e.g., a client device and a server device. The SyncML synchronization protocol using messages in the SyncML format (SyncML messages) generally allows for synchronization of data in any application between any networked terminals. For example, a calendar entry in a user device is synchronized with a network calendar.
FIG. 1 illustrates an example of system where a client device, e.g., a cell phone or other mobile device, functions as a SyncML client terminal and a data source, e.g., a computer or network server computer, functions as the SyncML server. SyncML client terminal synchronization application layer functions are provided by a synchronization client agent, which implements the SyncML protocol by sending a SyncML package (e.g., Client Modifications), which includes, in one or more SyncML messages, modifications made after the last synchronization session to the data that is the object of synchronization in the mobile device. SyncML/data source server synchronization application layer functions are provided by a sync server agent, which controls synchronization. The server usually waits for an initiative for synchronization from the SyncML client. The server synchronizes the data by analyzing the changes made to the database and client terminal data, and synchronizes the data (i.e., makes necessary modifications, replacements, and deletions). After this, the SyncML server sends the server modifications back to the SyncML client.
As described, for example, in “SyncML Sync Protocol, version 1.1.1” dated Oct. 2, 2002, (which is put forth by the Open Mobile Alliance (“OMA”) and provided at “http://www.openmobilealliance.org”, and for which the entire content is incorporated by reference herein), the SyncML synchronization protocol operates in both wireless and wired networks and supports several transfer protocols. The SyncML synchronization protocol can be implemented, for example, on top of HTTP protocol (Hyper Text Transfer Protocol), WSP protocol (Wireless Session Protocol) of the WAP (Wireless Application Protocol) standard, OBEX (Object EXchange Protocol) protocol used for cable links, such as the USB (Universal Serial Bus) or RS-232, or for short-range radio frequency (Bluetooth) links or infrared (IrDA) links, on top of a TCP/IP (Transport Control Protocol/Internet Protocol) stack, and also on top of an e-mail protocol (SMTP, Simple Mail Transfer Protocol). There are typically several different transmission media between the devices (client and server) of a SyncML session, for instance a GSM network providing a wireless connection, and a local area network LAN. Also many transport layer protocols may be used to transfer SyncML messages. Different transmission media and the devices involved in the SyncML session may have different properties, e.g., varying data rates and packet sizes. The SyncML includes end-to-end transmission of SyncML messages and functions even though a plurality of transport layer protocols are used.
Often a SyncML session needs a relatively long (e.g., several seconds to minutes or more) and continuous connection to complete a synchronization process, which generally includes synchronizing the client and server databases. If the connection is lost during the SyncML session, the client may need to perform a synchronization of all data (not just modifications) to ensure the datasets are synchronized. The synchronization of all data (sometimes referred to as a “slow sync”), may take an extended period of time leading to expensive data transfers and user dissatisfaction with the process. Accordingly, it is desired to provide improved systems and methods for synchronizing devices to avoid or reduce slow synchronization processes and further to perform slow synchronizations more quickly.